﻿namespace Confluxx.Common.Logging.Core
{
	public interface ILogger
	{
		/// <summary>
		/// Gets or sets a value that indicates whether logging is enabled.
		/// </summary>
		bool Enabled { get; set; }

		/// <summary>
		/// Writes a message to the log that the execution of a method has started.
		/// </summary>
		/// <param name="methodName">The method name to include in the message.</param>
		void EnterMethod(string methodName);

		/// <summary>
		/// Writes a message to the log that the execution of a method has ended.
		/// </summary>
		/// <param name="methodName">The method name to include in the message.</param>
		void LeaveMethod(string methodName);

		/// <summary>
		/// Write a simple message to the log.
		/// </summary>
		/// <param name="message">The message that should be logged.</param>
		void LogMessage(string message);
	}
}